home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 3_2004-2005.ISO / Data / Zips / FIRE_GDI+179010952004.psc / GDIPlus API.bas < prev   
BASIC Source File  |  2003-08-01  |  14KB  |  271 lines

  1. Attribute VB_Name = "GDIPlusAPI"
  2. Option Explicit
  3. ' Translated by Avery P. - 7/29/2002
  4. ' NOTES:
  5. '   - All GDI+ Strings expect and return ONLY Unicode - you'll need to use StrConv when using them or convert the APIs to use StrPtr.
  6. '     As always, there are a few exceptions to a rule, and ImageTitles are one string that uses only ANSI strings.
  7. '   - Functions with an I (i) at the end are non-floating point declarations.
  8. '   - If a function without the I (i) at the end doesn't work, try the one with (if any).
  9. '     If neither version worked, then you did something wrong, or the API *may* be misdeclared.
  10. '   - The word (ALL) next to an API set mean all of the functions are declared. (ALL GDI+ functions are now declared 8/12/2002)
  11. '   - Search for "TODO:" (no quotes) to see what still needs done within the file. If there is no TODO, there is nothing to do!
  12. '   - If you want to get all of the encoder or decoder file extensions, MIME type, or other values, try to use the Get__Clsid functions as a base.
  13. '   - If you don't like the idea of converting strings to and from Unicode, change all As String occurances in the API declarations
  14. '     to As Long, and pass the StrPtr() result there instead. I opted to use the As String for clarity, especially since the GDI+ docs are
  15. '     geared toward how to use the C++ classes.
  16. '   - I may have misdeclared the IStream functions as I'm not too familiar with them. Do a "TODO:" or "IStream" search (no quotes) to see the
  17. '     IStream functions. All parameters except one where declared as 'IStream* stream' in C++. The exception has a comment above it. The possible
  18. '     problem is that the IStream parameters should be passed ByRef instead of ByVal. If they are wrong, please tell me!
  19. '   - APIs are in ordered groups, just like the C++ header, but the groups themselves are not in the same order as in the C++ headers.
  20. '
  21. ' WARNINGS:
  22. '   - Some of the structs may not work, though I didn't test them all fully.
  23. '   - If a function causes a GPF or performs unexpectedly, make sure you are passing correct arguments.
  24. '     It also couldn't hurt to double-check the declarations as there is a chance they could be a bit off and looking in the MSDN can't hurt either.
  25. '   - Some APIs that have a ByRef parameter may expect an array; check the MSDN to find out if unsure.
  26. '
  27. '-----------------------------------------------
  28. ' 2/6/2003
  29. ' - I suppose I should put change notifications here in case you missed them on PSC.
  30. ' - Altered the ColorPalette to have 256 color palette entries regardless and the flags member is mapped to the PaletteFlags enum.
  31. ' - ImageCodecInfo now has the flags member mapped to the ImageCodecFlags enum.
  32. ' - GdipBitmapLockBits flags parameter changed to the ImageLockMode enum instead of a Long.
  33. ' - Altered the LOGFONTW lfFaceName member to be a String, which is twice as long as the ANSI to adjust for unicode.
  34. '   You'll want to use a StrConv on it to get the ANSI text. Also introduced a new constant to ease maintainance: LF_FACESIZEW
  35. '-----------------------------------------------
  36.  
  37.  
  38. '-----------------------------------------------
  39. ' String Pointer Related APIs (For the String Utilities)
  40. '-----------------------------------------------
  41. Public Declare Function CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Dest As Any, Src As Any, ByVal cb As Long) As Long
  42. Private Declare Function lstrlenW Lib "kernel32" (ByVal psString As Any) As Long
  43. Private Declare Function lstrlenA Lib "kernel32" (ByVal psString As Any) As Long
  44.  
  45.  
  46. '-----------------------------------------------
  47. ' CLSID Generation Related APIs
  48. '-----------------------------------------------
  49. Private Declare Function CLSIDFromString Lib "ole32.dll" (ByVal lpszProgID As Long, pCLSID As CLSID) As Long
  50.  
  51.  
  52. '-----------------------------------------------
  53. ' GDI+ Constants
  54. '-----------------------------------------------
  55. Public Const LF_FACESIZE As Long = 32
  56. Public Const LF_FACESIZEW As Long = LF_FACESIZE * 2
  57.  
  58. Public Const FlatnessDefault As Single = 1# / 4#
  59.  
  60. 'Shift count and bit mask for A, R, G, B components
  61. Public Const AlphaShift = 24
  62. Public Const RedShift = 16
  63. Public Const GreenShift = 8
  64. Public Const BlueShift = 0
  65.  
  66. Public Const AlphaMask = &HFF000000
  67. Public Const RedMask = &HFF0000
  68. Public Const GreenMask = &HFF00
  69. Public Const BlueMask = &HFF
  70.  
  71.  
  72. ' In-memory pixel data formats:
  73. ' bits 0-7 = format index
  74. ' bits 8-15 = pixel size (in bits)
  75. ' bits 16-23 = flags
  76. ' bits 24-31 = reserved
  77. Public Const PixelFormatIndexed = &H10000           ' Indexes into a palette
  78. Public Const PixelFormatGDI = &H20000               ' Is a GDI-supported format
  79. Public Const PixelFormatAlpha = &H40000             ' Has an alpha component
  80. Public Const PixelFormatPAlpha = &H80000            ' Pre-multiplied alpha
  81. Public Const PixelFormatExtended = &H100000         ' Extended color 16 bits/channel
  82. Public Const PixelFormatCanonical = &H200000
  83.  
  84. Public Const PixelFormatUndefined = 0
  85. Public Const PixelFormatDontCare = 0
  86.  
  87. Public Const PixelFormat1bppIndexed = &H30101
  88. Public Const PixelFormat4bppIndexed = &H30402
  89. Public Const PixelFormat8bppIndexed = &H30803
  90. Public Const PixelFormat16bppGreyScale = &H101004
  91. Public Const PixelFormat16bppRGB555 = &H21005
  92. Public Const PixelFormat16bppRGB565 = &H21006
  93. Public Const PixelFormat16bppARGB1555 = &H61007
  94. Public Const PixelFormat24bppRGB = &H21808
  95. Public Const PixelFormat32bppRGB = &H22009
  96. Public Const PixelFormat32bppARGB = &H26200A
  97. Public Const PixelFormat32bppPARGB = &HE200B
  98. Public Const PixelFormat48bppRGB = &H10300C
  99. Public Const PixelFormat64bppARGB = &H34400D
  100. Public Const PixelFormat64bppPARGB = &H1C400E
  101. Public Const PixelFormatMax = 15 '&HF
  102.  
  103.  
  104.  
  105. ' Image property types
  106. Public Const PropertyTagTypeByte = 1
  107. Public Const PropertyTagTypeASCII = 2
  108. Public Const PropertyTagTypeShort = 3
  109. Public Const PropertyTagTypeLong = 4
  110. Public Const PropertyTagTypeRational = 5
  111. Public Const PropertyTagTypeUndefined = 7
  112. Public Const PropertyTagTypeSLONG = 9
  113. Public Const PropertyTagTypeSRational = 10
  114.  
  115.  
  116. ' Image property ID tags
  117. Public Const PropertyTagExifIFD = &H8769
  118. Public Const PropertyTagGpsIFD = &H8825
  119.  
  120. Public Const PropertyTagNewSubfileType = &HFE
  121. Public Const PropertyTagSubfileType = &HFF
  122. Public Const PropertyTagImageWidth = &H100
  123. Public Const PropertyTagImageHeight = &H101
  124. Public Const PropertyTagBitsPerSample = &H102
  125. Public Const PropertyTagCompression = &H103
  126. Public Const PropertyTagPhotometricInterp = &H106
  127. Public Const PropertyTagThreshHolding = &H107
  128. Public Const PropertyTagCellWidth = &H108
  129. Public Const PropertyTagCellHeight = &H109
  130. Public Const PropertyTagFillOrder = &H10A
  131. Public Const PropertyTagDocumentName = &H10D
  132. Public Const PropertyTagImageDescription = &H10E
  133. Public Const PropertyTagEquipMake = &H10F
  134. Public Const PropertyTagEquipModel = &H110
  135. Public Const PropertyTagStripOffsets = &H111
  136. Public Const PropertyTagOrientation = &H112
  137. Public Const PropertyTagSamplesPerPixel = &H115
  138. Public Const PropertyTagRowsPerStrip = &H116
  139. Public Const PropertyTagStripBytesCount = &H117
  140. Public Const PropertyTagMinSampleValue = &H118
  141. Public Const PropertyTagMaxSampleValue = &H119
  142. Public Const PropertyTagXResolution = &H11A            ' Image resolution in width direction
  143. Public Const PropertyTagYResolution = &H11B            ' Image resolution in height direction
  144. Public Const PropertyTagPlanarConfig = &H11C           ' Image data arrangement
  145. Public Const PropertyTagPageName = &H11D
  146. Public Const PropertyTagXPosition = &H11E
  147. Public Const PropertyTagYPosition = &H11F
  148. Public Const PropertyTagFreeOffset = &H120
  149. Public Const PropertyTagFreeByteCounts = &H121
  150. Public Const PropertyTagGrayResponseUnit = &H122
  151. Public Const PropertyTagGrayResponseCurve = &H123
  152. Public Const PropertyTagT4Option = &H124
  153. Public Const PropertyTagT6Option = &H125
  154. Public Const PropertyTagResolutionUnit = &H128         ' Unit of X and Y resolution
  155. Public Const PropertyTagPageNumber = &H129
  156. Public Const PropertyTagTransferFuncition = &H12D
  157. Public Const PropertyTagSoftwareUsed = &H131
  158. Public Const PropertyTagDateTime = &H132
  159. Public Const PropertyTagArtist = &H13B
  160. Public Const PropertyTagHostComputer = &H13C
  161. Public Const PropertyTagPredictor = &H13D
  162. Public Const PropertyTagWhitePoint = &H13E
  163. Public Const PropertyTagPrimaryChromaticities = &H13F
  164. Public Const PropertyTagColorMap = &H140
  165. Public Const PropertyTagHalftoneHints = &H141
  166. Public Const PropertyTagTileWidth = &H142
  167. Public Const PropertyTagTileLength = &H143
  168. Public Const PropertyTagTileOffset = &H144
  169. Public Const PropertyTagTileByteCounts = &H145
  170. Public Const PropertyTagInkSet = &H14C
  171. Public Const PropertyTagInkNames = &H14D
  172. Public Const PropertyTagNumberOfInks = &H14E
  173. Public Const PropertyTagDotRange = &H150
  174. Public Const PropertyTagTargetPrinter = &H151
  175. Public Const PropertyTagExtraSamples = &H152
  176. Public Const PropertyTagSampleFormat = &H153
  177. Public Const PropertyTagSMinSampleValue = &H154
  178. Public Const PropertyTagSMaxSampleValue = &H155
  179. Public Const PropertyTagTransferRange = &H156
  180.  
  181. Public Const PropertyTagJPEGProc = &H200
  182. Public Const PropertyTagJPEGInterFormat = &H201
  183. Public Const PropertyTagJPEGInterLength = &H202
  184. Public Const PropertyTagJPEGRestartInterval = &H203
  185. Public Const PropertyTagJPEGLosslessPredictors = &H205
  186. Public Const PropertyTagJPEGPointTransforms = &H206
  187. Public Const PropertyTagJPEGQTables = &H207
  188. Public Const PropertyTagJPEGDCTables = &H208
  189. Public Const PropertyTagJPEGACTables = &H209
  190.  
  191. Public Const PropertyTagYCbCrCoefficients = &H211
  192. Public Const PropertyTagYCbCrSubsampling = &H212
  193. Public Const PropertyTagYCbCrPositioning = &H213
  194. Public Const PropertyTagREFBlackWhite = &H214
  195.  
  196. Public Const PropertyTagICCProfile = &H8773            ' This TAG is defined by ICC
  197.                                                 ' for embedded ICC in TIFF
  198. Public Const PropertyTagGamma = &H301
  199. Public Const PropertyTagICCProfileDescriptor = &H302
  200. Public Const PropertyTagSRGBRenderingIntent = &H303
  201.  
  202. Public Const PropertyTagImageTitle = &H320
  203. Public Const PropertyTagCopyright = &H8298
  204.  
  205. ' Extra TAGs (Like Adobe Image Information tags etc.)
  206.  
  207. Public Const PropertyTagResolutionXUnit = &H5001
  208. Public Const PropertyTagResolutionYUnit = &H5002
  209. Public Const PropertyTagResolutionXLengthUnit = &H5003
  210. Public Const PropertyTagResolutionYLengthUnit = &H5004
  211. Public Const PropertyTagPrintFlags = &H5005
  212. Public Const PropertyTagPrintFlagsVersion = &H5006
  213. Public Const PropertyTagPrintFlagsCrop = &H5007
  214. Public Const PropertyTagPrintFlagsBleedWidth = &H5008
  215. Public Const PropertyTagPrintFlagsBleedWidthScale = &H5009
  216. Public Const PropertyTagHalftoneLPI = &H500A
  217. Public Const PropertyTagHalftoneLPIUnit = &H500B
  218. Public Const PropertyTagHalftoneDegree = &H500C
  219. Public Const PropertyTagHalftoneShape = &H500D
  220. Public Const PropertyTagHalftoneMisc = &H500E
  221. Public Const PropertyTagHalftoneScreen = &H500F
  222. Public Const PropertyTagJPEGQuality = &H5010
  223. Public Const PropertyTagGridSize = &H5011
  224. Public Const PropertyTagThumbnailFormat = &H5012            ' 1 = JPEG, 0 = RAW RGB
  225. Public Const PropertyTagThumbnailWidth = &H5013
  226. Public Const PropertyTagThumbnailHeight = &H5014
  227. Public Const PropertyTagThumbnailColorDepth = &H5015
  228. Public Const PropertyTagThumbnailPlanes = &H5016
  229. Public Const PropertyTagThumbnailRawBytes = &H5017
  230. Public Const PropertyTagThumbnailSize = &H5018
  231. Public Const PropertyTagThumbnailCompressedSize = &H5019
  232. Public Const PropertyTagColorTransferFunction = &H501A
  233. Public Const PropertyTagThumbnailData = &H501B            ' RAW thumbnail bits in
  234.                                                    ' JPEG format or RGB format
  235.                                                    ' depends on
  236.                                                    ' PropertyTagThumbnailFormat
  237.  
  238. ' Thumbnail related TAGs
  239. Public Const PropertyTagThumbnailImageWidth = &H5020        ' Thumbnail width
  240. Public Const PropertyTagThumbnailImageHeight = &H5021       ' Thumbnail height
  241. Public Const PropertyTagThumbnailBitsPerSample = &H5022     ' Number of bits per
  242.                                                      ' component
  243. Public Const PropertyTagThumbnailCompression = &H5023       ' Compression Scheme
  244. Public Const PropertyTagThumbnailPhotometricInterp = &H5024 ' Pixel composition
  245. Public Const PropertyTagThumbnailImageDescription = &H5025  ' Image Tile
  246. Public Const PropertyTagThumbnailEquipMake = &H5026         ' Manufacturer of Image
  247.                                                      ' Input equipment
  248. Public Const PropertyTagThumbnailEquipModel = &H5027        ' Model of Image input
  249.                                                      ' equipment
  250. Public Const PropertyTagThumbnailStripOffsets = &H5028      ' Image data location
  251. Public Const PropertyTagThumbnailOrientation = &H5029       ' Orientation of image
  252. Public Const PropertyTagThumbnailSamplesPerPixel = &H502A   ' Number of components
  253. Public Const PropertyTagThumbnailRowsPerStrip = &H502B      ' Number of rows per strip
  254. Public Const PropertyTagThumbnailStripBytesCount = &H502C   ' Bytes per compressed
  255.                                                      ' strip
  256. Public Const PropertyTagThumbnailResolutionX = &H502D       ' Resolution in width
  257.                                                      ' direction
  258. Public Const PropertyTagThumbnailResolutionY = &H502E       ' Resolution in height
  259.                                                      ' direction
  260. Public Const PropertyTagThumbnailPlanarConfig = &H502F      ' Image data arrangement
  261. Public Const PropertyTagThumbnailResolutionUnit = &H5030    ' Unit of X and Y
  262.                                                      ' Resolution
  263. Public Const PropertyTagThumbnailTransferFunction = &H5031  ' Transfer function
  264. Public Const PropertyTagThumbnailSoftwareUsed = &H5032      ' Software used
  265. Public Const PropertyTagThumbnailDateTime = &H5033          ' File change date and
  266.                                                      ' time
  267. Public Const PropertyTagThumbnailArtist = &H5034            ' Person who created the
  268.                                                      ' image
  269. Public Const PropertyTagThumbnailWhitePoint = &H5035        ' White point chromaticity
  270. Public Const PropertyTagThumbnailPpertyTagImageTitle = &H32bicity
  271. Public        o2C   ic Const Prs1h &H5f9tyT2e      Const Mailc  nst ahumbnailDateTime = &H5033  Fu